const Product = require('../../../models/product'); import dbConnect from '../../../utils/helpers/dbHelpers'; const shuffle = function (v) { //+ Jonas Raoni Soares Silva //@ http://jsfromhell.com/array/shuffle [rev. #1] for ( var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x ); return v; }; async function handler(req, res) { const { method } = req; await dbConnect(); switch (method) { case 'GET': { try { const productId = req.query.productId; const product = await Product.findOne({ customID: productId }); if (!product) { throw new Error('The product with this id does not exist!'); } const similarProducts = await Product.find({ category: product.category, customID: { $ne: product.customID }, }); const shuffled = similarProducts .sort(() => 0.5 - Math.random()) .slice(0, 3); res.status(200).json({ message: 'The product you requested was fetched successfully.', product, similarProducts: shuffled, }); } catch (error) { res.status(400).json({ message: error.message }); } break; } default: res.status(405).json({ message: 'Method not allowed' }); break; } } export default handler;